suppressPackageStartupMessages({
  library(tweenr)
  library(gganimate)
  library(tidyverse)
})
windowsFonts(Raleway = windowsFont("Raleway"))
pal1 <- c("#969457", "#357c57")
pal2 <- c("#b7e972", "#377368")

Pesqueros

Arribos CA

Paleta1

read_csv("GSB_Landings.csv", col_types = cols()) %>% 
  gather(Procedencia, Captura, -Year) %>% 
  ggplot(aes(x = Year, y = Captura, color = Procedencia)) +
  geom_line(size = 1.1) +
  theme_classic() +
  theme(legend.justification = c(0.5, 0.5),
        legend.position = c(0.7, 0.7),
        text = element_text(family = "Raleway", size = 18)) +
  scale_color_manual(values = pal1) +
  labs(x = "Año", y = "Arribos (Toneladas)") +
  scale_x_continuous(breaks = seq(1920, 2010, 10), minor_breaks = NULL) +
  scale_y_continuous(breaks = seq(0, 375, 75), minor_breaks = NULL)

ggsave("Paleta1.tiff", dpi = 600, width = 16, height = 8)

Paleta 2

read_csv("GSB_Landings.csv", col_types = cols()) %>% 
  gather(Procedencia, Captura, -Year) %>% 
  ggplot(aes(x = Year, y = Captura, color = Procedencia)) +
  geom_line(size = 1.1) +
  theme_classic() +
  theme(legend.justification = c(0.5, 0.5),
        legend.position = c(0.7, 0.7),
        text = element_text(family = "Raleway", size = 20)) +
  scale_color_manual(values = pal2) +
  labs(x = "Año", y = "Arribos comerciales de Mero Gigante en California \n(Toneladas)") +
  scale_x_continuous(breaks = seq(1920, 2010, 10), minor_breaks = NULL) +
  scale_y_continuous(breaks = seq(0, 375, 75), minor_breaks = NULL)

ggsave("Paleta2.tiff", dpi = 600, width = 16, height = 8)

Paleta 1 animada

plot_data <- read_csv("GSB_Landings.csv", col_types = cols()) %>% 
  gather(Procedencia, Arribos, -Year) %>% 
  mutate(ease = "linear", x = Year) %>% 
  rename(y = Arribos, id = Procedencia, time = Year) 
tween_plot <- plot_data %>%
  tween_elements(., "time", "id", "ease", nframes = 250) %>%   #using tweenr!
  mutate(year = round(time), id = .group) %>%
  left_join(plot_data, by = c("time", "y", "x", "id")) %>% 
  rename(Procedencia = id) %>% 
  ggplot(aes(x = x, y = y, frame = .frame, color = Procedencia)) +
  geom_path(aes(group = Procedencia, cumulative = T), size = 1.1) +
  theme_classic() +
  theme(legend.justification = c(0.5, 0.5),
        legend.position = c(0.7, 0.7),
        text = element_text(family = "Raleway", size = 18)) +
  scale_color_manual(values = pal1) +
  labs(x = "Año", y = "Arribos (Toneladas)") +
  scale_x_continuous(breaks = seq(1920, 2010, 10), minor_breaks = NULL) +
  scale_y_continuous(breaks = seq(0, 375, 75), minor_breaks = NULL)
Column `id` joining factor and character vector, coercing into character vectorIgnoring unknown aesthetics: cumulative
gganimate(tween_plot, title_frame = FALSE, interval = 0.001, "Landings_CA.gif", ani.width = 800, ani.height = 500)

Arribos Mexico

read_csv("GSB_Landings_mx.csv", col_types = cols()) %>% 
  ggplot(aes(x = Ano, y = Arribos)) +
  geom_line(size = 1.1, color = "#357c57") +
  geom_point(size = 2, color = "#357c57") +
  theme_classic() +
  theme(legend.justification = c(0.5, 0.5),
        legend.position = c(0.7, 0.7),
        text = element_text(family = "Raleway", size = 20)) +
  labs(x = "Año", y = "Arribos comerciales de Mero Gigante \n(Toneladas)")
ggsave("Mex.tiff", dpi = 600, width = 16, height = 8)

Biologicos

bio <- read.csv(file = "records.csv", stringsAsFactors = F) %>% 
  select(Species, Site, Sale_price_pkg, Fish_Market_name, Catch_site, Pesca_Objetivo, Weight, Total_Length, Head_Length, Weight_notes, Otoliths, Collector) %>% 
  magrittr::set_colnames(value = tolower(colnames(.)))

Registros por persona

colectores <- group_by(bio, site, collector) %>% 
  count() %>% 
  ggplot(aes(x = collector, y = n)) +
  geom_col(aes(fill = site), color = "black") +
  cowplot::theme_cowplot() +
  theme(legend.justification = c(1, 1),
        legend.position = c(0.9, 0.9)) +
  scale_fill_brewer(palette = "Set1") +
  ggExtra::rotateTextX()
plotly::ggplotly(colectores)
LW <- filter(bio, !is.na(total_length),
             !is.na(weight)) %>%  
  mutate(weight_notes = ifelse(is.na(weight_notes), "No notes", weight_notes),
         site = ifelse(is.na(site), "Missing", site)) %>% 
  ggplot(aes(x = total_length, y = weight, color = weight_notes, site = site, otolitos = otoliths)) +
  geom_point(size = 2, alpha = 0.5) +
  scale_color_brewer(palette = "Set1", direction = -1)
plotly::ggplotly(LW)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6DQogICAgaHRtbF9ub3RlYm9vazoNCiAgICAgIHRvYzogeWVzDQogICAgICB0b2NfZmxvYXQ6IHllcw0KLS0tDQoNCmBgYHtyfQ0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsNCiAgbGlicmFyeSh0d2VlbnIpDQogIGxpYnJhcnkoZ2dhbmltYXRlKQ0KICBsaWJyYXJ5KHRpZHl2ZXJzZSkNCn0pDQoNCndpbmRvd3NGb250cyhSYWxld2F5ID0gd2luZG93c0ZvbnQoIlJhbGV3YXkiKSkNCmBgYA0KDQpgYGB7cn0NCnBhbDEgPC0gYygiIzk2OTQ1NyIsICIjMzU3YzU3IikNCg0KcGFsMiA8LSBjKCIjYjdlOTcyIiwgIiMzNzczNjgiKQ0KYGBgDQoNCiMgUGVzcXVlcm9zDQoNCiMjIEFycmlib3MgQ0ENCg0KIyMjIFBhbGV0YTENCg0KYGBge3IsIGZpZy53aWR0aCA9IDgsIGZpZy5oZWlnaHQgPSA0fQ0KcmVhZF9jc3YoIkdTQl9MYW5kaW5ncy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKCkpICU+JSANCiAgZ2F0aGVyKFByb2NlZGVuY2lhLCBDYXB0dXJhLCAtWWVhcikgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBZZWFyLCB5ID0gQ2FwdHVyYSwgY29sb3IgPSBQcm9jZWRlbmNpYSkpICsNCiAgZ2VvbV9saW5lKHNpemUgPSAxLjEpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgdGhlbWUobGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAuNSwgMC41KSwNCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjcsIDAuNyksDQogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlJhbGV3YXkiLCBzaXplID0gMTgpKSArDQogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBwYWwxKSArDQogIGxhYnMoeCA9ICJBw7FvIiwgeSA9ICJBcnJpYm9zIGNvbWVyY2lhbGVzIGRlIE1lcm8gR2lnYW50ZSBlbiBDYWxpZm9ybmlhIChUb25lbGFkYXMpIikgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5MjAsIDIwMTAsIDEwKSwgbWlub3JfYnJlYWtzID0gTlVMTCkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDM3NSwgNzUpLCBtaW5vcl9icmVha3MgPSBOVUxMKQ0KDQpnZ3NhdmUoIlBhbGV0YTEudGlmZiIsIGRwaSA9IDYwMCwgd2lkdGggPSAxNiwgaGVpZ2h0ID0gOCkNCmBgYA0KDQojIyMgUGFsZXRhIDINCg0KYGBge3IsIGZpZy53aWR0aCA9IDgsIGZpZy5oZWlnaHQgPSA0fQ0KcmVhZF9jc3YoIkdTQl9MYW5kaW5ncy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKCkpICU+JSANCiAgZ2F0aGVyKFByb2NlZGVuY2lhLCBDYXB0dXJhLCAtWWVhcikgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBZZWFyLCB5ID0gQ2FwdHVyYSwgY29sb3IgPSBQcm9jZWRlbmNpYSkpICsNCiAgZ2VvbV9saW5lKHNpemUgPSAxLjEpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgdGhlbWUobGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDAuNSwgMC41KSwNCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjcsIDAuNyksDQogICAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIlJhbGV3YXkiLCBzaXplID0gMjApKSArDQogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBwYWwyKSArDQogIGxhYnMoeCA9ICJBw7FvIiwgeSA9ICJBcnJpYm9zIGNvbWVyY2lhbGVzIGRlIE1lcm8gR2lnYW50ZSBlbiBDYWxpZm9ybmlhIFxuKFRvbmVsYWRhcykiKSArDQogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTkyMCwgMjAxMCwgMTApLCBtaW5vcl9icmVha3MgPSBOVUxMKSArDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMzc1LCA3NSksIG1pbm9yX2JyZWFrcyA9IE5VTEwpDQoNCmdnc2F2ZSgiUGFsZXRhMi50aWZmIiwgZHBpID0gNjAwLCB3aWR0aCA9IDE2LCBoZWlnaHQgPSA4KQ0KDQpgYGANCg0KIyMjIFBhbGV0YSAxIGFuaW1hZGENCg0KYGBge3J9DQpwbG90X2RhdGEgPC0gcmVhZF9jc3YoIkdTQl9MYW5kaW5ncy5jc3YiLCBjb2xfdHlwZXMgPSBjb2xzKCkpICU+JSANCiAgZ2F0aGVyKFByb2NlZGVuY2lhLCBBcnJpYm9zLCAtWWVhcikgJT4lIA0KICBtdXRhdGUoZWFzZSA9ICJsaW5lYXIiLCB4ID0gWWVhcikgJT4lIA0KICByZW5hbWUoeSA9IEFycmlib3MsIGlkID0gUHJvY2VkZW5jaWEsIHRpbWUgPSBZZWFyKSANCg0KdHdlZW5fcGxvdCA8LSBwbG90X2RhdGEgJT4lDQogIHR3ZWVuX2VsZW1lbnRzKC4sICJ0aW1lIiwgImlkIiwgImVhc2UiLCBuZnJhbWVzID0gMjUwKSAlPiUgICAjdXNpbmcgdHdlZW5yIQ0KICBtdXRhdGUoeWVhciA9IHJvdW5kKHRpbWUpLCBpZCA9IC5ncm91cCkgJT4lDQogIGxlZnRfam9pbihwbG90X2RhdGEsIGJ5ID0gYygidGltZSIsICJ5IiwgIngiLCAiaWQiKSkgJT4lIA0KICByZW5hbWUoUHJvY2VkZW5jaWEgPSBpZCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSB4LCB5ID0geSwgZnJhbWUgPSAuZnJhbWUsIGNvbG9yID0gUHJvY2VkZW5jaWEpKSArDQogIGdlb21fcGF0aChhZXMoZ3JvdXAgPSBQcm9jZWRlbmNpYSwgY3VtdWxhdGl2ZSA9IFQpLCBzaXplID0gMS4xKSArDQogIHRoZW1lX2NsYXNzaWMoKSArDQogIHRoZW1lKGxlZ2VuZC5qdXN0aWZpY2F0aW9uID0gYygwLjUsIDAuNSksDQogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9IGMoMC43LCAwLjcpLA0KICAgICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJSYWxld2F5Iiwgc2l6ZSA9IDE4KSkgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gcGFsMSkgKw0KICBsYWJzKHggPSAiQcOxbyIsIHkgPSAiQXJyaWJvcyAoVG9uZWxhZGFzKSIpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgxOTIwLCAyMDEwLCAxMCksIG1pbm9yX2JyZWFrcyA9IE5VTEwpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAzNzUsIDc1KSwgbWlub3JfYnJlYWtzID0gTlVMTCkNCg0KZ2dhbmltYXRlKHR3ZWVuX3Bsb3QsIHRpdGxlX2ZyYW1lID0gRkFMU0UsIGludGVydmFsID0gMC4wMDEsICJMYW5kaW5nc19DQS5naWYiLCBhbmkud2lkdGggPSA4MDAsIGFuaS5oZWlnaHQgPSA1MDApDQoNCmBgYA0KDQojIyBBcnJpYm9zIE1leGljbw0KDQpgYGB7cn0NCnJlYWRfY3N2KCJHU0JfTGFuZGluZ3NfbXguY3N2IiwgY29sX3R5cGVzID0gY29scygpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IEFubywgeSA9IEFycmlib3MpKSArDQogIGdlb21fbGluZShzaXplID0gMS4xLCBjb2xvciA9ICIjMzU3YzU3IikgKw0KICBnZW9tX3BvaW50KHNpemUgPSAyLCBjb2xvciA9ICIjMzU3YzU3IikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICB0aGVtZShsZWdlbmQuanVzdGlmaWNhdGlvbiA9IGMoMC41LCAwLjUpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBjKDAuNywgMC43KSwNCiAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiUmFsZXdheSIsIHNpemUgPSAyMCkpICsNCiAgbGFicyh4ID0gIkHDsW8iLCB5ID0gIkFycmlib3MgY29tZXJjaWFsZXMgZGUgTWVybyBHaWdhbnRlIFxuKFRvbmVsYWRhcykiKQ0KDQpnZ3NhdmUoIk1leC50aWZmIiwgZHBpID0gNjAwLCB3aWR0aCA9IDE2LCBoZWlnaHQgPSA4KQ0KDQpgYGANCg0KIyBCaW9sb2dpY29zDQoNCmBgYHtyfQ0KYmlvIDwtIHJlYWQuY3N2KGZpbGUgPSAicmVjb3Jkcy5jc3YiLCBzdHJpbmdzQXNGYWN0b3JzID0gRikgJT4lIA0KICBzZWxlY3QoU3BlY2llcywgU2l0ZSwgU2FsZV9wcmljZV9wa2csIEZpc2hfTWFya2V0X25hbWUsIENhdGNoX3NpdGUsIFBlc2NhX09iamV0aXZvLCBXZWlnaHQsIFRvdGFsX0xlbmd0aCwgSGVhZF9MZW5ndGgsIFdlaWdodF9ub3RlcywgT3RvbGl0aHMsIENvbGxlY3RvcikgJT4lIA0KICBtYWdyaXR0cjo6c2V0X2NvbG5hbWVzKHZhbHVlID0gdG9sb3dlcihjb2xuYW1lcyguKSkpDQpgYGANCg0KDQojIyBSZWdpc3Ryb3MgcG9yIHBlcnNvbmENCg0KYGBge3IsIGZpZy53aWR0aCA9IDEwLCBmaWcuaGVpZ2h0ID0gMTB9DQpjb2xlY3RvcmVzIDwtIGdyb3VwX2J5KGJpbywgc2l0ZSwgY29sbGVjdG9yKSAlPiUgDQogIGNvdW50KCkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBjb2xsZWN0b3IsIHkgPSBuKSkgKw0KICBnZW9tX2NvbChhZXMoZmlsbCA9IHNpdGUpLCBjb2xvciA9ICJibGFjayIpICsNCiAgY293cGxvdDo6dGhlbWVfY293cGxvdCgpICsNCiAgdGhlbWUobGVnZW5kLmp1c3RpZmljYXRpb24gPSBjKDEsIDEpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBjKDAuOSwgMC45KSkgKw0KICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIlNldDEiKSArDQogIGdnRXh0cmE6OnJvdGF0ZVRleHRYKCkNCg0KcGxvdGx5OjpnZ3Bsb3RseShjb2xlY3RvcmVzKQ0KYGBgDQoNCmBgYHtyLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDV9DQpMVyA8LSBmaWx0ZXIoYmlvLCAhaXMubmEodG90YWxfbGVuZ3RoKSwNCiAgICAgICAgICAgICAhaXMubmEod2VpZ2h0KSkgJT4lICANCiAgbXV0YXRlKHdlaWdodF9ub3RlcyA9IGlmZWxzZShpcy5uYSh3ZWlnaHRfbm90ZXMpLCAiTm8gbm90ZXMiLCB3ZWlnaHRfbm90ZXMpLA0KICAgICAgICAgc2l0ZSA9IGlmZWxzZShpcy5uYShzaXRlKSwgIk1pc3NpbmciLCBzaXRlKSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSB0b3RhbF9sZW5ndGgsIHkgPSB3ZWlnaHQsIGNvbG9yID0gd2VpZ2h0X25vdGVzLCBzaXRlID0gc2l0ZSwgb3RvbGl0b3MgPSBvdG9saXRocykpICsNCiAgZ2VvbV9wb2ludChzaXplID0gMiwgYWxwaGEgPSAwLjUpICsNCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MSIsIGRpcmVjdGlvbiA9IC0xKQ0KDQpwbG90bHk6OmdncGxvdGx5KExXKQ0KYGBgDQoNCg==